FINAL SOLUTION: No Artifacts Approach
π΄ The Real Problem
Youβre absolutely right! The split-job approach I initially suggested still uses artifacts, which means:
- β Still counts against your storage quota
- β Can still hit quota limits if workflow runs frequently
- β Only reduces the problem, doesnβt solve it
β The Real Solution: ZERO Artifacts
You need a workflow that doesnβt use artifacts at all. Here are your options:
π― Recommended Solution Options
Option 1: Use Quartoβs Built-in Publish β EASIEST & BEST
File: quarto-publish.simple.yml
How it works:
Render β Push directly to gh-pages branch
(No artifacts, no GitHub Actions Pages system)
Command:
quarto publish gh-pages --no-prompt --no-browserPros:
- β ZERO artifacts - No storage quota used
- β Simplest solution - One command does everything
- β Official Quarto method
- β Works natively on Windows
- β Handles all git operations automatically
Cons:
- Uses
contents: writepermission (needs to push to gh-pages branch)
GitHub Pages Setup Required:
- Go to: Settings β Pages
- Source: Deploy from a branch
- Branch:
gh-pages/root
Option 2: Manual Git Push to gh-pages β FULL CONTROL
File: quarto-publish.direct.yml
How it works:
Render β Manually push docs to gh-pages branch
(No artifacts, custom deployment logic)
Pros:
- β ZERO artifacts
- β Full control over deployment process
- β Works natively on Windows
- β Can customize deployment logic
Cons:
- More complex workflow script
- More git commands to maintain
Option 3: Current Approach (NOT RECOMMENDED)
File: quarto-publish.win64.yml (current)
Problems:
- β Uses
upload-artifact@v4(counts against quota!) - β Creates artifact on every run
- β Even with 1-day retention, can accumulate if you run frequently
- β This is whatβs causing your quota issue
π Comparison Table
| Approach | Artifacts Used? | Quota Impact | Works on Windows? | Complexity |
|---|---|---|---|---|
| Quarto built-in | β None | β Zero | β Yes | β Simple |
| Manual gh-pages push | β None | β Zero | β Yes | ββ Medium |
| Split job (current) | β Yes (1 day) | β οΈ Low but not zero | β Yes | βββ Complex |
| Single job with Pages API | β Yes | β High | β Needs WSL | βββ Complex |
π Implementation Steps
To Use Option 1 (Quarto Built-in - RECOMMENDED):
Disable current workflow:
# Rename to disable it cd "E:\dev.darioa.live\darioairoldi\Learn\.github\workflows" Rename-Item "quarto-publish.win64.yml" "quarto-publish.win64.yml.disabled"Enable the simple workflow:
# It's already created as quarto-publish.simple.yml # Just commit and pushConfigure GitHub Pages:
- Go to: https://github.com/darioairoldi/Learn/settings/pages
- Source: Deploy from a branch
- Branch: gh-pages / root
- Save
Commit and test:
cd "E:\dev.darioa.live\darioairoldi\Learn" git add .github/workflows/ git commit -m "Switch to Quarto built-in publish (no artifacts)" git push
π― Why Quarto Built-in is Best
The quarto publish gh-pages command is specifically designed for this use case:
# This ONE command does everything:
quarto publish gh-pages --no-prompt --no-browserWhat it does internally:
- Renders your Quarto project
- Creates/updates the
gh-pagesbranch - Pushes the rendered content
- All without using any GitHub Actions artifacts!
Itβs literally the official way to publish Quarto to GitHub Pages.
π§Ή Cleaning Up After Switch
After switching to the no-artifact approach:
Run the cleanup script to remove existing artifacts:
cd "E:\dev.darioa.live\darioairoldi\Learn\20251018 ISSUE Github action fails with Artifact storage quota has been hit" .\cleanup-artifacts.ps1Monitor that no new artifacts are created:
- Go to: https://github.com/darioairoldi/Learn/actions/artifacts
- Should remain empty after workflows run
π Quick Decision Guide
Use Quarto Built-in (quarto-publish.simple.yml) if:
- β You want the simplest solution
- β
Youβre okay with
quarto publishhandling everything - β You want the official Quarto method
- β You want ZERO artifacts
Use Manual Push (quarto-publish.direct.yml) if:
- β You need custom deployment logic
- β You want more control over the git operations
- β You want ZERO artifacts
Donβt use the split-job approach if:
- β Youβre hitting artifact storage quota limits
- β You run workflows frequently
- β You want to avoid artifacts completely
β Summary
The issue with the current approach:
- Still uses artifacts (even with 1-day retention)
- Can accumulate if workflow runs frequently
- Not a true solution to the quota problem
The real solution:
- Use
quarto publish gh-pagescommand - No artifacts at all
- Simple, official, and works perfectly on Windows
Next step:
- Replace
quarto-publish.win64.ymlwithquarto-publish.simple.yml - Configure GitHub Pages to use
gh-pagesbranch - Done! No more quota issues, ever.
Ready to implement? I recommend Option 1 (Quarto built-in). π